\cleardoublepage
\section{仿真训练}
\subsection{PD参数测试}

尽管最终训练好的步态被证明在不同的PD参数配置下都适用，但由于强化学习的搜索空间限制，PD参数范围的设定对策略学习过程有着显著影响。具体而言，当比例增益（$K_p$）设定较小时，机器人在训练初期难以产生有效的响应，容易出现“站桩”或原地抖动等现象；而当$K_p$过大时，机器人则虽然能前进，但是腿部僵硬，膝关节弯曲角度小。

图\ref{fig:pd} 展示了在不同PD参数设定下的奖励曲线，其中紫色曲线对应较大的$K_p$设置，黄色曲线对应较小的$K_p$设置。两组PD参数的具体数值如下表所示：


\begin{table}[H]
    \centering
    \caption{不同PD参数配置对比}
    \label{tab:pd_compare}
    \begin{tabular}{lcc}
    \toprule
    \textbf{关节} & \textbf{紫色曲线的$K_p$} & \textbf{黄色曲线的 $K_p$（黄色曲线）} \\
    \midrule
    hip\_pitch & 80.0 & 20.0 \\
    hip\_roll  & 40.0 & 10.0 \\
    thigh     & 40.0 & 10.0 \\
    calf      & 80.0 & 20.0 \\
    ankle\_pitch & 30.0 & 7.6 \\
    ankle\_roll  & 30.0 & 7.5 \\
    \bottomrule
    \end{tabular}
\end{table}

\begin{figure}[htbp]
    \centering
    \includegraphics[width=0.8\linewidth]{PD.png}
    \caption{不同PD参数训练曲线}
    \label{fig:pd}
\end{figure}
\begin{figure}[htbp]
    \centering
    \includegraphics[width=1.0\linewidth]{episode_lengt.png}
    \caption{不同PD参数episode\_length曲线  }
    \label{fig:pd_episode_len}
\end{figure}

\begin{figure}[htbp]
    \centering
    \begin{minipage}[t]{0.45\linewidth}
        \centering
        \includegraphics[width=\linewidth]{large_pd.png}
        \caption{较大Kp参数的行走步态}
        \label{fig:large_pd}
    \end{minipage}
    \hspace{0.05\linewidth} % 两张图之间的间距
    \begin{minipage}[t]{0.45\linewidth}
        \centering
        \includegraphics[width=\linewidth]{small_pd.png}
        \caption{较小Kp参数原地不动}
        \label{fig:small_pd}
    \end{minipage}
\end{figure}


从图\ref{fig:pd}可以看出，紫色曲线奖励整体高于黄色曲线，这是因为紫色曲线的拥有更长的存活时间（episode\_length），然而黄色曲线的悬空脚奖励远高于紫色曲线，这体现出在更大的
Kp参数下，机器人能够学会双脚交替动作，然而能量利用效率惩罚上，紫色曲线远高于黄色，这是因为较大的 $K_p$ 参数下，电机执行器对期望关节位置的响应更加刚性，导致机器人在运动中动作迅速但会产生更大的关节扭矩，使得计算出的能量利用效率奖励较低。
这两个奖励相互耦合导致强化学习在这两种$K_p$条件下无法探索到需要的状况。
本实验表明，合理的PD参数设置可以在保证控制响应灵敏性的同时，避免过度刚性带来的策略训练困难。最终训练中选取了一组中等幅度的$K_p$参数，平衡了步态稳定性与策略可学习性。


\subsection{速度跟踪情况}

在isaac中，机器人表现出了良好的速度跟踪情况，如图\ref{fig:isaac_vel}所示，机器人能够快速适应变化的速度指令，

\begin{figure}[htbp]
    \centering
    \includegraphics[width=0.8\linewidth]{isaac_vel.png}
    \caption{IsaacGym速度跟踪情况}
    \label{fig:isaac_vel}
\end{figure}
    

\subsection{sim2sim}

    为了验证深度强化学习策略在不同仿真平台间的迁移能力，
本文在Gazebo仿真环境中实现了从Isaac Gym训练环境到Gazebo平台的sim2sim迁移。首先，将在Isaac Gym中训练得到的策略模型导出为.pt格式，并通过LibTorch在C++端进行加载。
随后，策略以Gazebo插件（plugin）的形式嵌入到仿真运行中，使其能够在Gazebo环境中运行。在插件初始化过程中，系统完成模型参数加载、神经网络权重初始化以及与Gazebo仿真循环的绑定。动作控制部分以关节期望角度的形式输出，并通过Gazebo中的PD控制器执行，实现对仿人机器人各自由度的精确控制。状态观测包括IMU信息、关节角度与速度、命令向量等，保持与训练环境中一致的结构，以保障策略输入分布的稳定性。为匹配动作尺度与物理参数，系统对Gazebo机器人模型进行了参数标定与缩放，使其尽可能接近训练时的仿真模型。在实际运行中，机器人完成了基础行走、转向及踢球等动作，表明所训练策略具有良好的跨平台迁移能力。

为进一步评估策略性能，记录了机器人基座在Gazebo环境中的身体线速度与期望指令的跟踪情况

\begin{figure}[htbp]
    \centering
    \includegraphics[width=0.5\linewidth]{vel_track.png}
    \caption{速度跟踪曲线}
    \label{fig:vel_track}
\end{figure}



从图\ref{fig:vel_track}中可以看出，虽然机器人基座的实际速度在一定范围内波动，但整体能够较好地跟随速度命令的变化趋势
（线速度的高频抖动事实上是受到双足步行时步态交替的影响）。


\section{实物实验}

为验证在仿真环境中训练得到的策略在真实机器人平台上的可行性与鲁棒性，本文在双足机器人硬件平台上进行了实物部署实验。
将在Isaac Gym中训练完成的策略模型以\texttt{.pt}格式导出，并通过LibTorch接口集成至机器人控制系统中，实现端到端的控制策略执行。

\subsection{部署流程}

策略的部署过程主要包括以下几个步骤：

\begin{enumerate}
    \item \textbf{模型导出与转换}：将策略模型导出为\texttt{TorchScript}格式，并使用LibTorch进行读取和模型预构建；
    \item \textbf{感知与执行}：编写机器人读取IMU与关节数据的函数接口，对数据中的噪声进行过滤，将策略输出动作通过处理后输出为电机力矩指令；
    \item \textbf{安全控制与数据记录}：设置动作幅度限幅、与紧急停止逻辑，同时编写脚本进行数据记录与绘制。
\end{enumerate}

\subsection{感知与执行}

在实物部署过程中，为尽可能减小仿真与实际机器人之间在电机响应特性与物理环境上的差异，本文在底层控制上延续了与仿真环境中相同的力控控制策略。具体而言，实际机器人采用 $10000$ Hz 的控制频率，实时读取电机状态信息，并结合与仿真中一致的 $K_p$ 和 $K_d$ 系数，计算出所需的电机目标力矩指令。该方法使得控制逻辑在仿真与实物之间保持高度一致，从而提升策略迁移的稳定性。

电机的状态读取与控制指令的下发均通过 \texttt{CAN} 总线通信协议实现，底层通过串口接口进行实时的数据交换。同时，为获取机器人在实际环境中的姿态信息，本文使用 \texttt{IMU} 传感器获取六轴惯性数据，该数据同样通过串口读取后，封装为 \texttt{ROS} 消息格式，并实时发布至 \texttt{/imu/data} 话题。同时，控制器通过ros\_joy实时接收手柄信息，实现速度指令的下发和急停。


\begin{figure}[htbp]
    \centering
    \includegraphics[width=0.8\linewidth]{imu_plot.png}
    \caption{静止情况下imu读数}
    \label{fig:imu}
\end{figure}


\begin{figure}[htbp]
    \centering
    \begin{minipage}[t]{0.48\linewidth}
        \centering
        \includegraphics[width=\linewidth]{imu_filter.png}
        \caption{IMU过滤前后对比图（直接绘制）}
        \label{fig:imu_filter}
    \end{minipage}
    \hfill
    \begin{minipage}[t]{0.48\linewidth}
        \centering
        \includegraphics[width=\linewidth]{fourier.png}
        \caption{IMU过滤前后对比图（傅里叶分析）}
        \label{fig:imu_filter_fourier}
    \end{minipage}
\end{figure}


实物上imu读取的数据存在频率不稳定的噪声，如图\ref{fig:imu}所示，通过加入低通滤波，将imu的噪声幅度从0.008降低到0.003的同时，将噪声的频率降低到了5Hz以下，如图\ref{fig:imu_filter,fig:imu_filter_fourier}所示。


为验证控制一致性，我们将仿真中生成的一段参考动作输入至实物平台，并记录其实际执行的关节轨迹。图\ref{fig:replay}展示了仿真与实物在主要关节角度上的对比情况。结果表明，大部分关节轨迹一致性良好。

\begin{figure}[htbp]
    \centering
    \includegraphics[width=0.8\linewidth]{action_replay.png}
    \caption{仿真——实物关节角度对比}
    \label{fig:replay}
\end{figure}

\subsection{实验结果与分析}

在实物平台上，机器人成功实现了直线行走与速度跟踪控制等基本运动任务，表现出良好的稳定性与指令响应能力。在无任何参数微调的前提下，策略展现出较强的迁移能力，能够适应物理环境中的模型不确定性、传感器噪声与控制延迟等因素。
\begin{figure}[htbp]
    \centering
    \includegraphics[width=0.5\linewidth]{replay.png}
    \caption{机器人行走动作}
    \label{fig:replay_real}
\end{figure}
实测过程中，机器人步态表现自然，身体姿态保持稳定，未出现明显跌倒或失衡现象，验证了策略在“sim-to-real”场景下的有效性。步态切换与速度调整过程中虽存在轻微的响应延迟，但整体跟踪精度较高，体现出策略在动态控制方面的鲁棒性。

